#pragma once

// Copyright (c) 2010 Manuel Peinado Gallego <manuel.peinado@gmail.com>
// Distributed under the MIT license

// Drawable.h : interface of the Drawable class
//

#include "Common.h"
#include <alg3d/alg3d.h>

class View3d;


class Drawable
{
public:

    Drawable() 
    {
    }

    ~Drawable()
    {
    }

    // ------------------------------------------------------------------------
    // Returns the order in which Drawables of a particular subclass should
    // be rendered with respect to other drawables

    enum { kDefaultDrawOrder = 10 };
    virtual size_t getDrawOrder() const
    {
        return kDefaultDrawOrder;
    }
    
    // ------------------------------------------------------------------------

    virtual void draw(View3d* view) const = 0;

    // --------------------------------------------------------------

protected:

};


